package com.mnsk.generator.common.core.page;

import com.mnsk.generator.common.constant.PageConstants;
import com.mnsk.generator.common.utils.text.Convert;
import com.mnsk.generator.common.utils.StringUtils;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * <p>
 * 分页查询参数（为空或其他字符时不进行分页）
 * </p>
 *
 * @author admin
 * @date 2020-09-28 11:51
 */
@Data
@Accessors(chain = true)
//分页参数
public class PageDomain {

    //当前记录起始索引
    private Integer pageNum;

    //每页显示记录数
    private Integer pageSize;

    //排序列（多个用逗号分隔）
    private String orderByColumn;

    //排序的方向(desc或asc)，默认倒序
    private String isAsc;

    public String getIsAsc() {
        return ("asc".equals(isAsc) || "desc".equals(isAsc)) ? isAsc : PageConstants.DEFAULT_IS_ASC;
    }

    /**
     * 获取排序sql
     */
    public String getOrderBy() {
        return StringUtils.isEmpty(orderByColumn) ? "" : StringUtils.humpToUnderline(orderByColumn) + " " + getIsAsc();
    }

    /**
     * 返回排序列（默认采用下划线格式）
     */
    public String[] columns() {
        String[] columns = Convert.toStrArray(orderByColumn);
        for (int i = 0; i < columns.length; i++) {
            columns[i] = StringUtils.humpToUnderline(columns[i]);
        }
        return columns.length > 0 ? columns : new String[0];
    }

}
